﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EFramework.Web.TypeExtension;

namespace  RzCorportativo.Views.Cadastros
{
    public partial class Triagem : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(this.Request.QueryString["consultaId"]))
                return;
            var consultaId = IntExtension.Parse(this.Request.QueryString["consultaId"], -1);
            if (consultaId > 0)
            {
                this.ConsultaId.Value = consultaId.ToString();
                var triagens = RzCorportativo.Lib.Triagem.Listar(new RzCorportativo.Lib.Triagem() { ConsultaId = consultaId });
                if (triagens != null && triagens.Count > 0 && triagens.FirstOrDefault() != null)
                {
                    var _triagem = triagens.FirstOrDefault();
                    this.TriagemId.Value = _triagem.TriagemId.ToString();
                    this.Temperatura.Text = ((object)_triagem.Temperatura ?? (object)string.Empty).ToString();
                    this.Pressao.Text = ((object)_triagem.PressaoArterial ?? (object)string.Empty).ToString();
                    this.FrequenciaCardiaca.Text = ((object)_triagem.FrequenciaCardiaca ?? (object)string.Empty).ToString();
                    this.Altura.Text = ((object)_triagem.Altura ?? (object)string.Empty).ToString();
                    this.Peso.Text = ((object)_triagem.Peso ?? (object)string.Empty).ToString();
                }
            }
            else
            {
                Alert alert = new Alert("erroGeral", this);
                alert.AlertType = AlertType.Error;
                alert.Add("falha", "Desculpe, isto é vergonhoso");
                alert.Add("falhaDetalhe", "Não foi possível completar a operação");
                alert.Show();
            }
        }

        protected void salvar_Click(object sender, EventArgs e)
        {
            var triagem = new RzCorportativo.Lib.Triagem();
            if(this.Altura.Text.Length > 0)
                triagem.Altura = DoubleExtension.Parse(this.Altura.Text, -1);
            triagem.ConsultaId = IntExtension.Parse(this.ConsultaId.Value, -1);
            if(this.FrequenciaCardiaca.Text.Length > 0)
                triagem.FrequenciaCardiaca = DoubleExtension.Parse(this.FrequenciaCardiaca.Text, -1);
            if(this.Peso.Text.Length > 0)
                triagem.Peso = DoubleExtension.Parse(this.Peso.Text, -1);
            if(this.Pressao.Text.Length > 0)
                triagem.PressaoArterial = DoubleExtension.Parse(this.Pressao.Text, -1);
            if(this.Temperatura.Text.Length > 0)
                triagem.Temperatura = DoubleExtension.Parse(this.Temperatura.Text, -1);
            if(this.TriagemId.Value.Length > 0)
                triagem.TriagemId = LongExtension.Parse(this.TriagemId.Value, -1);
            Alert alert = new Alert("erroGeral", this);
            alert.AlertType = AlertType.Error;
            try
            {
                if (triagem.TriagemId == -1)
                    alert.Add("triagemId", "Triagem inválida");
                if (triagem.ConsultaId == -1)
                    alert.Add("consulta", "A consulta selecionada para esta triagem é inválida");
                if (triagem.Temperatura.HasValue && triagem.Temperatura == -1)
                    alert.Add("temperatura", "Tepmeratura inválida");
                if (triagem.FrequenciaCardiaca.HasValue && triagem.FrequenciaCardiaca == -1)
                    alert.Add("frequencia", "Frequencia cardiaca inválida");
                if (triagem.PressaoArterial.HasValue && triagem.PressaoArterial == -1)
                    alert.Add("pressao", "Pressão inválida");
                if (triagem.Peso.HasValue && triagem.Peso == -1)
                    alert.Add("peso", "Peso inválido");
                if (triagem.Altura.HasValue && triagem.Altura == -1)
                    alert.Add("altura", "Altura inválida");
                if (alert.HasMessage)
                    return;
                triagem.Observacoes = this.Observacoes.HtmlString;
                if (triagem.Salvar())
                {
                    alert.Add("salvo", "Item salvo com sucesso!");
                    alert.AlertType = AlertType.Success;
                }
                else{
                    alert.Add("falha", "Desculpe, isto é vergonhoso");
                    alert.Add("falhaDetalhe", "Não foi possível completar a operação");
                }
            }
            catch (Exception ex)
            {
                alert.Add("exception", ex.Message);
            }
            finally
            {
                if (alert.HasMessage)
                    alert.Show();
            }
        }
    }
}